import axios from "axios";
import { goLogin } from "@/utils/index";
import { getToken, setToken } from './auth'

const request = axios.create({
  baseURL: process.env.VUE_APP_BASE_API, // 推荐 url 直接使用全路径
  timeout: 300000, //请求不能超过 5min
  headers: {
    "Content-Type": "application/json;charset=utf-8",
  },
});

// request 拦截器
request.interceptors.request.use(
  (config) => {
    // 设置请求头
    const token = getToken();
    if (token) {
      config.headers["token"] = token;
    }
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);

// response 拦截器
request.interceptors.response.use(
  response => {
    const res = response.data
    // 场景1：接口返回新 token（根据实际 API 设计调整） 
    if (res.data && res.data.userinfo) {
      setToken(res.data.userinfo.token) // 更新内存+本地存储
    }
    return res
  },
  error => {
    if (error.response) {
      const { status } = error.response
      // 处理 401 未授权
      if (status === 401) {
        // 2. 重定向到登录页，携带当前路由路径
        goLogin();
        // 3. 可选：显示提示信息
        // Message.error('登录已过期，请重新登录')
      }
    }
    return Promise.reject(error)
  }
)

export default request;
